package com.ape.mapsa.produccion.model;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

/**
 * The persistent class for the item database table.
 * 
 */
@Entity
public class Item implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;

	private Float ancho;

	private String codigo;

	private Float densidad;

	private String descripcion;

	private Float espesor;

	@Column(name = "item_categoria")
	private String itemCategoria;

	@Column(name = "item_state")
	private int itemState;

	private Float largo;

	private Float peso;

	private String tratado;

	private Boolean impresion;

	// bi-directional many-to-one association to ForumlaMp
	@OneToMany(mappedBy = "item")
	private List<FormulaMp> forumlaMps;

	// bi-directional many-to-one association to Color
	@ManyToOne
	@JoinColumn(name = "color")
	private Color colorBean = new Color();

	// bi-directional many-to-one association to DepItemPrintSpec
	@ManyToOne
	@JoinColumn(name = "dep_print_specs_id")
	private DepItemPrintSpec depItemPrintSpec = new DepItemPrintSpec();

	// bi-directional many-to-one association to Muestra
	@ManyToOne
	@JoinColumn(name = "muestra")
	private Muestra muestraBean = new Muestra();

	// bi-directional many-to-one association to ItemTipo
	@ManyToOne
	@JoinColumn(name = "tipo")
	private ItemTipo itemTipo = new ItemTipo();

	// bi-directional many-to-one association to OrdenProduccion
	@OneToMany(mappedBy = "item")
	private List<OrdenProduccion> ordenProduccions;

	public Item() {
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Float getAncho() {
		return this.ancho;
	}

	public void setAncho(Float ancho) {
		this.ancho = ancho;
	}

	public String getCodigo() {
		return this.codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public Float getDensidad() {
		return this.densidad;
	}

	public void setDensidad(Float densidad) {
		this.densidad = densidad;
	}

	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public Float getEspesor() {
		return this.espesor;
	}

	public void setEspesor(Float espesor) {
		this.espesor = espesor;
	}

	public int getItemState() {
		return this.itemState;
	}

	public void setItemState(int itemState) {
		this.itemState = itemState;
	}

	public Float getLargo() {
		return this.largo;
	}

	public void setLargo(Float largo) {
		this.largo = largo;
	}

	public Float getPeso() {
		return this.peso;
	}

	public void setPeso(Float peso) {
		this.peso = peso;
	}

	public String getTratado() {
		return this.tratado;
	}

	public void setTratado(String tratado) {
		this.tratado = tratado;
	}

	public Color getColorBean() {
		return this.colorBean;
	}

	public void setColorBean(Color colorBean) {
		this.colorBean = colorBean;
	}

	public DepItemPrintSpec getDepItemPrintSpec() {
		return this.depItemPrintSpec;
	}

	public void setDepItemPrintSpec(DepItemPrintSpec depItemPrintSpec) {
		this.depItemPrintSpec = depItemPrintSpec;
	}

	public Muestra getMuestraBean() {
		return this.muestraBean;
	}

	public void setMuestraBean(Muestra muestraBean) {
		this.muestraBean = muestraBean;
	}

	public ItemTipo getItemTipo() {
		return this.itemTipo;
	}

	public void setItemTipo(ItemTipo itemTipo) {
		this.itemTipo = itemTipo;
	}

	public List<OrdenProduccion> getOrdenProduccions() {
		return this.ordenProduccions;
	}

	public void setOrdenProduccions(List<OrdenProduccion> ordenProduccions) {
		this.ordenProduccions = ordenProduccions;
	}

	public String getItemCategoria() {
		return itemCategoria;
	}

	public void setItemCategoria(String itemCategoria) {
		this.itemCategoria = itemCategoria;
	}

	public List<FormulaMp> getForumlaMps() {
		return forumlaMps;
	}

	public void setForumlaMps(List<FormulaMp> forumlaMps) {
		this.forumlaMps = forumlaMps;
	}

	public OrdenProduccion addOrdenProduccion(OrdenProduccion ordenProduccion) {
		getOrdenProduccions().add(ordenProduccion);
		ordenProduccion.setItem(this);

		return ordenProduccion;
	}

	public OrdenProduccion removeOrdenProduccion(OrdenProduccion ordenProduccion) {
		getOrdenProduccions().remove(ordenProduccion);
		ordenProduccion.setItem(null);

		return ordenProduccion;
	}

	@Override
	public String toString() {
		return "Item [id=" + id + ", ancho=" + ancho + ", codigo=" + codigo + ", densidad=" + densidad + ", descripcion=" + descripcion
				+ ", espesor=" + espesor + ", itemState=" + itemState + ", largo=" + largo + ", peso=" + peso + ", tratado=" + tratado
				+ ", colorBean=" + colorBean + "]";
	}

	public Boolean getImpresion() {
		return impresion;
	}

	public void setImpresion(Boolean impresion) {
		this.impresion = impresion;
	}

}